iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
DevOps

SRE/K8S 碎碎念系列 第 3

Day 3 使用 Session Manager 連線至 EKS

  • 分享至 

  • xImage
  •  

假設公司內有多個開發者,我們要讓每個開發者可以進入到跳板機並操作到 EKS,有以下步驟

  1. 在 local 端建立金鑰

    cd ~/.ssh
    ssh-keygen -t rsa -b 4096 -C "alvin@xxcompany.com"
    
  2. 前往 bastion 並將剛剛生成的公鑰放上

    sudo su
    cd /home/ubuntu
    vim .ssh/authorized_keys
    
  3. 在公司內網的環境上,使用指令進入跳板機

    ssh -i "< Private Key Location >" ubuntu@54.150.214.27
    

但這個方法有幾個缺點

  1. 我們要生成並管理多個金鑰在 bastion 上
  2. 在 cloudtrail 上,每個人操作 EKS 的角色都是跳板機的 role,難以做資安管理

為了解決這個問題,我們後來將 bastion 改成 session manager,好處有兩個

  1. 不需要金鑰,而是直接用 local 端驗證 AWS 身份,再由 AWS
  2. 可以從 cloudtrail 進行身份 audit

AWS Session Manager 介紹

AWS Session Manager 是 AWS Systems Manager 的其中一個服務。你可以使用它用安全的 tunnel 管理 EC2(不需要使用 SSH 或 RDP)。他有很高的安全性,因為連線的對象不需要設置任何 port 或使用金鑰。且他的連線動作都會自動記錄到 Amazon S3 或 CloudWatch Logs,很方便 Audit 或分析。

使用的方式就是要將 Bastion 成功開啟 AWS Session Manager 的功能,條件有以下

  1. IAM Role:EC2 的 role 至少要包含 AmazonSSMManagedInstanceCore 的權限
  2. 安裝 Amazon SSM Agent :後來新建的 EC2 基本上都有預設了

成功之後,就可以使用以下指令從 local 端直接連線 EKS$

$ aws ssm start-session --target < Bastion Instance ID > --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters '{"portNumber":["443"],"localPortNumber":["4443"],"host":[" < EKS API server endpoint > "]}' --profile < Your Profile >
$ kubectl get pods -A

上一篇
[D2] 如何 access 到 private EKS
下一篇
D4 維運小工具設定
系列文
SRE/K8S 碎碎念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言